home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / nrpas13.arc / VANDER.PAS < prev    next >
Pascal/Delphi Source File  |  1991-05-01  |  1KB  |  45 lines

  1. PROCEDURE vander(x: glnarray; VAR w: glnarray; q: glnarray; n: integer);
  2. (* Programs using the routine VANDER must define the type
  3. TYPE
  4.    glnarray = ARRAY [1..n] OF real;
  5. in the main routine. *)
  6. CONST
  7.    zero=0.0;
  8.    one=1.0;
  9. VAR
  10.    k1,k,j,i: integer;
  11.    xx,t,s,b: real;
  12.    c: glnarray;
  13. BEGIN
  14.    IF (n = 1) THEN BEGIN
  15.       w[1] := q[1]
  16.    END ELSE BEGIN
  17.       FOR i := 1 TO n DO BEGIN
  18.          c[i] := zero
  19.       END;
  20.       c[n] := -x[1];
  21.       FOR i := 2 TO n DO BEGIN
  22.          xx := -x[i];
  23.          FOR j := (n+1-i) TO (n-1) DO BEGIN
  24.             c[j] := c[j]+xx*c[j+1]
  25.          END;
  26.          c[n] := c[n]+xx
  27.       END;
  28.       FOR i := 1 TO n DO BEGIN
  29.          xx := x[i];
  30.          t := one;
  31.          b := one;
  32.          s := q[n];
  33.          k := n;
  34.          FOR j := 2 TO n DO BEGIN
  35.             k1 := k-1;
  36.             b := c[k]+xx*b;
  37.             s := s+q[k1]*b;
  38.             t := xx*t+b;
  39.             k := k1
  40.          END;
  41.          w[i] := s/t
  42.       END
  43.    END
  44. END;
  45.